package com.softer.wxzj.mapper.base;

import com.softer.wxzj.entity.AccInterestConfig;
import com.softer.wxzj.entity.BaseCellInfo;
import com.softer.wxzj.entity.BaseHouseInfo;
import com.softer.wxzj.entity.BaseModifyDetail;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * BaseMapper class
 *
 * @author zcz
 * @date 2019/1/16
 */
@Repository
public interface BaseMapper<T> {
    /**
     * 新增
     *
     * @param t
     * @return
     */
    int insert(T t);

    /**
     * 整体修改
     *
     * @param t
     * @return
     */
    int update(T t);

    /**
     * 全表更新
     *
     * @param t
     * @return
     */
    int updateById(T t);

    /**
     * 选择性修改
     *
     * @param t
     * @return
     */
    int updateSelective(T t);

    /**
     * @methodName: delete
     * @description: 根据实体删除信息
     */
    int delete(@Param("id") String id);
   AccInterestConfig selectMinAllConfig ();
    /**
     * 查询列表list
     *
     * @return
     */
    List<T> getList();

    /**
     * 查询列表list,根据实体
     *
     * @return
     */
    List<T> getList(T t);

    /**
     * 查询count
     *
     * @return
     */
    int getCount(String str);

    /**
     * 查询详细信息
     *
     * @param id
     * @return
     */
    T getInfo(@Param("id") String id);

    /**
     * 查询详细信息
     *
     * @param id
     * @return
     */
    T getInfoById(String id);

    /**
     * 获取变更列名结合
     *
     * @param id 变更Id
     * @return 列名集合
     */
    List<String> getColumnList(String id);

    List<String> getColumnListByHouse(String id);

    List<String> getColumnListHouse(String id);

    /**
     * 获取变更添加列名结合
     *
     * @param id 变更Id
     * @return 列名集合
     */
    List<String> getColumnListByBus(@Param("id") String id, @Param("bus") String bus);

    /**
     * 获取变更实体
     *
     * @param map list 列名集合
     *            id   变更ID
     * @return 变更实体
     */
    T getChangeColumn(Map<String, Object> map);

    /**
     * 单元
     *
     * @param map
     * @return
     */
    BaseCellInfo getChangeColumnCell(Map<String, Object> map);

    /**
     * 查询变更详情
     *
     * @param id 变更ID
     * @return 变更详情
     */
    List<BaseModifyDetail> getModifyDetailList(String id);

    /**
     * 查询变更信息列表
     *
     * @return
     */
    List<T> getModifyReqList(T t);

    /**
     * 查询变更实体，用在变更对比
     *
     * @return
     */
    T getModifyInfo(String id);

    /**
     * 通过各种id查询房屋信息
     *
     * @param buildNo
     * @param cellNo
     * @return
     */
    List<BaseHouseInfo> selectAllByBuildId(@Param("buildNo") String buildNo, @Param("cellNo") String cellNo);

    /**
     * @param newValue
     * @param oldValue
     * @param buildNo
     * @param id
     * @param cellNo
     * @return
     */
    int updateHouseSit(@Param("newValue") String newValue, @Param("oldValue") String oldValue, @Param("buildNo") String buildNo, @Param("id") String id, @Param("cellNo") String cellNo);

    /**
     * 删除单元
     *
     * @param ids
     * @return
     */
    int delCell(String ids);

    int selectCreater(String operNo);

    int selectCreaterName(String operNo);

    int selectSettlement(String operNo);

    int selectVerifier(String operNo);


}
